#define _CRT_SECURE_NO_WARNINGS 1

//#include<stdlib.h>
//
//struct ListNode
//{
//    int val;
//    ListNode* next;
//};
//
//typedef struct ListNode ListNode;
//
//ListNode* BuyNode(int x)
//{
//    ListNode* node = (ListNode*)malloc(sizeof(ListNode));
//    node->val = x;
//    node->next = NULL;
//    return node;
//}
//
//void ListPushBack(ListNode** pphead, int x)
//{
//    ListNode* NewNode = BuyNode(x);
//    if (*pphead == NULL)
//    {
//        *pphead = NewNode;
//    }
//    else
//    {
//        ListNode* pcur = *pphead;
//        while (pcur->next)
//        {
//            pcur = pcur->next;
//        }
//        pcur->next = NewNode;
//    }
//}
//
//struct ListNode* deleteDuplicates(struct ListNode* head)
//{
//    ListNode* RetList = NULL;
//    ListNode* pcur = head;
//    while (pcur)
//    {
//        if (pcur->next && pcur->val != pcur->next->val)
//        {
//            ListPushBack(&RetList, pcur->val);
//            pcur = pcur->next;
//        }
//        else
//        {
//            ListNode* temp = pcur;
//            while (temp->next && temp->val == temp->next->val)
//            {
//                temp = temp->next;
//            }
//            pcur = temp;
//        }
//    }
//    return RetList;
//}
//
//int main()
//{
//    ListNode* plist = NULL;
//
//    ListPushBack(&plist, 1);
//    ListPushBack(&plist, 2);
//    ListPushBack(&plist, 3);
//    ListPushBack(&plist, 3);
//    ListPushBack(&plist, 4);
//    ListPushBack(&plist, 4);
//    ListPushBack(&plist, 5);
//
//    ListNode* RetList = deleteDuplicates(plist);
//    
//    return 0;
//}

#include<stdio.h>

//struct ListNode
//{
//    int val;
//    ListNode* next;
//};
//
//typedef struct ListNode ListNode;
//
//struct ListNode* deleteDuplicates(struct ListNode* head)
//{
//    if (head == NULL)
//    {
//        return head;
//    }
//    ListNode* dst = head, * src = dst->next;
//    while (src)
//    {
//        if (src->val != dst->val)
//        {
//            dst = dst->next;
//            dst->val = src->val;
//        }
//        src = src->next;
//    }
//    dst->next = NULL;
//    return head;
//}